package com.jinsi.controller.ylt;

import com.jinsi.constant.YltConstant;
import com.jinsi.pojo.*;
import com.jinsi.service.ylt.UserListService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.jinsi.util.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @ClassName UserListController
 * @Content 用户列表Controller
 * @Author 姚龙腾
 * @Date 2022/10/12 11:53
 */
@RestController
@RequestMapping("/YltUser")
@Slf4j
public class UserListController {

    @Autowired
    private UserListService userListService;

    /**
     * 获取用户列表信息
     * @param page
     * @param limit
     * @param insider
     * @return R
     */
    @RequestMapping("/UserManage/getUserList")
    public R getUserList(Integer page, Integer limit, Integer insider){
        PageHelper.startPage(page,limit);
        List<SyCourseLog> list = userListService.getAll(insider);
        PageInfo<SyCourseLog> pageInfo = new PageInfo<>(list);
        return R.custom(YltConstant.LAYUI_CODE,
                YltConstant.LAYUI_MSG,
                pageInfo.getList(),
                pageInfo.getTotal());
    }


    /**
     * 根据输入信息进行模糊查询
     * @param page
     * @param limit
     * @param insider
     * @param userName
     * @param userAccount
     * @param userCreateDate
     * @return R
     */
    @RequestMapping("/UserManage/getUserListByLike")
    public R getUserListByLike(Integer page, Integer limit, Integer insider, String userName, String userAccount, String userCreateDate){
        PageHelper.startPage(page,limit);
        List<SyCourseLog> list = userListService.getAllByLike(insider,userName,userAccount,userCreateDate);
        PageInfo<SyCourseLog> pageInfo = new PageInfo<>(list);
        return R.custom(YltConstant.LAYUI_CODE,
                YltConstant.LAYUI_MSG,
                pageInfo.getList(),
                pageInfo.getTotal());
    }



    /**
     * 修改用户账号状态
     * @param syUser
     * @return R
     */
    @RequestMapping("/UserManage/upUserStats")
    public R upUserStats(@RequestBody SyUserLeading syUser){
        try {
            userListService.upUserStats(syUser.getUserId(),syUser.getUserStats());
            log.info("修改用户账号状态 upUserStats方法执行成功 修改用户id : ${}",syUser.getUserId());
            return R.ok();
        } catch (Exception e) {
            log.error("修改用户账号状态 upUserStats方法执行失败 报错原因 : ${}",e);
            return R.error();
        }
    }



    /**
     * 修改用户信息
     * @param user
     * @return R
     */
    @RequestMapping("/UserManage/upUser")
    public R upUser(@RequestBody SyUserLeading user){
        try {
            userListService.upUser(user);
            log.info("修改用户信息 upUser方法执行成功 修改用户 : ${}",user);
            return R.ok();
        } catch (Exception e) {
            log.error("修改用户信息 upUser方法执行失败 报错原因 : ${}",e);
            return R.error();
        }
    }



    /**
     * 添加为进思用户
     * @param array
     * @return R
     */
    @RequestMapping("/UserManage/upUserInsider")
    public R upUserInsider(@RequestParam("array") String array){
        String[] arr = array.split(",");
        try {
            userListService.upUserInsider(arr);
            log.info("添加为进思用户 upUserInsider方法执行成功 添加用户的id有 : ${}",arr);
            return R.ok();
        }catch (Exception e){
            log.error("添加为进思用户 upUserInsider方法执行失败 报错原因 : ${}",e);
            return R.error();
        }


    }


    /**
     * 为用户发放优惠券
     * @param userArray
     * @param couponArray
     * @return R
     */
    @RequestMapping("/UserManage/couponIssuance")
    public R couponIssuance(@RequestParam("userArray") String userArray, @RequestParam("couponArray") String couponArray){
        String[] userArr = userArray.split(",");
        String[] couponArr = couponArray.split(",");
        try {
            userListService.addSyDiscountsIssuance(userArr,couponArr);
            log.info("为用户发放优惠券 couponIssuance方法执行成功 赠送的用户id有 : ${}",userArr);
            log.info("为用户发放优惠券 couponIssuance方法执行成功 发放的优惠劵id有 : ${}",couponArr);
            return R.ok();
        }catch (Exception e){
            log.error("为用户发放优惠券 couponIssuance方法执行失败 报错原因 : ${}",e);
            return R.error();
        }

    }



    /**
     * 封停用户账号
     * @param syUserSeal
     * @return R
     */
    @RequestMapping("/UserManage/addUserSeal")
    public R addUserSeal(SyUserSeal syUserSeal){
        try {
            userListService.addUserSeal(syUserSeal);
            log.info("封停用户账号 addUserSeal方法执行成功 封停用户 : ${}",syUserSeal);
            return R.ok();
        } catch (Exception e) {
            log.error("封停用户账号 addUserSeal方法执行失败 报错原因 : ${}",e);
            return R.error();
        }
    }


    /**
     * 在原有封停信息上再次添加封停
     * @param syUserSeal
     * @return R
     */
    @RequestMapping("/UserManage/upUserSealDate")
    public R upUserSealDate(SyUserSeal syUserSeal){
        try {
            userListService.upUserSealDate(syUserSeal);
            log.info("在原有封停信息上再次添加封停 upUserSealDate方法执行成功 封停用户 : ${}",syUserSeal);
            return R.ok();
        } catch (Exception e) {
            log.error("在原有封停信息上再次添加封停 upUserSealDate方法执行失败 报错原因 : ${}",e);
            return R.error();
        }
    }


}
